TOP

SQL UNION ステートメント

SQL UNION 説明

UNION 演算子は、2 つ以上の SELECT ステートメントの結果セットを結合するために使用されます。

  • UNION 内の各 SELECT ステートメントには、同じ数の列が必要です
  • 列にも同様のデータ型が必要です
  • 各 SELECT ステートメント内の列も同じ順序である必要があります。

  • UNION 構文

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2
    

    UNION ALL 構文

    UNION 演算子は、デフォルトでは個別の値のみを選択します。重複した値を許可するには、UNION ALL を使用します。

    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2
    
    通常、結果セット内の列名は、最初の SELECT ステートメントの列名と一致します。

    デモデータベース

    このチュートリアルでは、有名なサンプル データベース「Northwind」を使用します。

    以下はテーブル「Customers」(「顧客」) のサンプルです。

    CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
    1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
    2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
    3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
    4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
    5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

    テーブル「Suppliers」(「サプライヤー」) のサンプル:

    SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
    1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
    2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
    3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
    4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
    5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

    SQL UNION の例

    次の SQL ステートメントは、Customers テーブルと Suppliers テーブルから都市 (異なる値のみ) を選択します。

    Run SQLSELECT City FROM Customers 
    UNION 
    SELECT City FROM Suppliers 
    ORDER BY City
    
    一部の顧客またはサプライヤーが同じ都市 (City) を持っている場合、UNION は異なる値のみを選択するため、各都市は 1 回だけ指定されます。 UNION ALL を使用して、重複する値も選択してください。

    SQL UNION ALL の例

    次の SQL ステートメントは、Customers テーブルと Suppliers テーブルの両方から都市 (重複する値) を選択します。

    Run SQLSELECT City FROM Customers 
    UNION ALL 
    SELECT City FROM Suppliers 
    ORDER BY City
    

    SQL UNION と WHERE

    次の SQL ステートメントは、Customers テーブルと Suppliers テーブルの両方からドイツの都市 (異なる値のみ) を選択します。

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    SQL UNION ALL と WHERE

    次の SQL ステートメントは、Customers テーブルと Suppliers テーブルの両方からドイツの都市 (重複する値) を選択します。

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION ALL 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    別の SQL UNION の例

    次の SQL ステートメントは、すべての顧客とサプライヤーをリストします。

    Run SQLSELECT 'Customer' AS Type, ContactName, City, Country 
    FROM Customers 
    UNION 
    SELECT 'Supplier', ContactName, City, Country 
    FROM Suppliers
    

    上記の「AS Type」はエイリアスであることに注意してください。 SQL エイリアスは、テーブルまたは列に一時的な名前を付けるために使用されます。 エイリアスはリクエストの継続中のみ存在します。 そこで、ここでは連絡先が「顧客」であるか「ベンダー」であるかを示す「Type」という一時的な列を作成しました。